20. 列表推导式(选学)
L3 14 列表推导式 V4
列表推导式
在 Python 中,你可以使用列表推导式快速简练地创建列表。下面是之前的一个示例:
capitalized_cities = []
for city in cities:
capitalized_cities.append(city.title())
可以简写为:
capitalized_cities = [city.title() for city in cities]
借助列表推导式,我们可以使用
for
循环用一步创建一个列表。
我们使用方括号
[]
创建列表推导式,括号里包含要对可迭代对象中的每个元素进行评估的条件。上述列表推导式对
cities
中的每个元素
city
调用
city.title()
,以为新列表
capitalized_cities
创建每个元素。
列表推导式中的条件语句
你还可以向列表推导式添加条件语句。在可迭代对象之后,你可以使用关键字
if
检查每次迭代中的条件。
squares = [x**2 for x in range(9) if x % 2 == 0]
上述代码将
squares
设为等于列表 [0, 4, 16, 36, 64],因为仅在 x 为偶数时才评估 x 的 2 次幂。如果你想添加
else
,将遇到语法错误。
squares = [x**2 for x in range(9) if x % 2 == 0 else x + 3]
如果你要添加
else
,则需要将条件语句移到列表推导式的开头,直接放在表达式后面,如下所示。
squares = [x**2 if x % 2 == 0 else x + 3 for x in range(9)]
列表推导式并没有在其他语言中出现,但是在 python 中很常见。